import type { ProjectConfig } from '/#/config';
import { MenuTypeEnum, MenuModeEnum, TriggerEnum, MixSidebarTriggerEnum } from '/@/enums/menuEnum';
import { CacheTypeEnum } from '/@/enums/cacheEnum';
import {
  ContentEnum,
  PermissionModeEnum,
  ThemeEnum,
  RouterTransitionEnum,
  SettingButtonPositionEnum,
  SessionTimeoutProcessingEnum,
} from '/@/enums/appEnum';
import { SIDE_BAR_BG_COLOR_LIST, HEADER_PRESET_BG_COLOR_LIST } from './designSetting';

const primaryColor = '#0960bd';

/**
 * 项目配置,You need to clear the browser cache after the change
 */
const setting: ProjectConfig = {
  // 是否显示配置按钮
  showSettingButton: true,

  // 是否显示主题切换按钮
  showDarkModeToggle: true,

  // "设置"按钮位置
  settingButtonPosition: SettingButtonPositionEnum.AUTO,

  // 权限模式
  permissionMode: PermissionModeEnum.ROUTE_MAPPING,

  // 权限相关缓存存储在 sessionStorage 或 localStorage 中
  permissionCacheType: CacheTypeEnum.LOCAL,

  // 会话超时处理
  sessionTimeoutProcessing: SessionTimeoutProcessingEnum.ROUTE_JUMP,

  // 主题颜色
  themeColor: primaryColor,

  // 网站灰色模式，用于可能的哀悼或纪念日
  grayMode: false,

  // 色弱模式
  colorWeak: false,

  // 是否取消菜单、顶部、多标签页显示，用于可能嵌入其他系统
  fullContent: false,

  // 内容模式
  contentMode: ContentEnum.FULL,

  // 是否显示Logo
  showLogo: true,

  // 是否显示页脚
  showFooter: false,

  // 页眉配置
  headerSetting: {
    // 页眉背景色
    bgColor: HEADER_PRESET_BG_COLOR_LIST[0],

    // 固定在顶部
    fixed: true,

    // 是否显示顶部
    show: true,

    // 主题
    theme: ThemeEnum.LIGHT,

    // 是否启用锁屏功能
    useLockPage: true,

    // 是否显示全屏按钮
    showFullScreen: true,

    // 是否显示文档按钮
    showDoc: true,

    // 是否显示通知按钮
    showNotice: true,

    // 是否显示菜单搜索
    showSearch: true,
  },

  // 菜单配置
  menuSetting: {
    // 侧边栏菜单背景色
    bgColor: SIDE_BAR_BG_COLOR_LIST[0],

    // 是否固定左侧菜单
    fixed: true,

    // 菜单折叠
    collapsed: false,

    // 响应式布局导致侧边栏隐藏时
    siderHidden: false,

    // 菜单折叠时是否显示菜单名称
    collapsedShowTitle: false,

    // 是否可拖动
    // 仅限于打开左侧菜单时，鼠标在菜单右侧有一个拖动条
    canDrag: false,

    // 是否显示菜单
    show: true,

    // 是否隐藏菜单
    hidden: false,

    // 菜单宽度
    menuWidth: 210,

    // 菜单模式
    mode: MenuModeEnum.INLINE,

    // 菜单类型
    type: MenuTypeEnum.SIDEBAR,

    // 菜单主题
    theme: ThemeEnum.DARK,

    // 分割菜单
    split: false,

    // 顶部菜单布局
    topMenuAlign: 'center',

    // 折叠触发位置
    trigger: TriggerEnum.HEADER,

    // 开启手风琴模式，仅显示一个菜单
    accordion: true,

    // 切换页面关闭菜单
    closeMixSidebarOnChange: false,

    // 模块打开方式 ‘click’ | 'hover'
    mixSideTrigger: MixSidebarTriggerEnum.CLICK,

    // 固定展开菜单
    mixSideFixed: false,
  },

  // 多标签页
  multiTabsSetting: {
    // 缓存
    cache: false,

    // 是否开启
    show: true,

    // 是否可以拖拽排序标签页
    canDrag: true,

    // 是否开启快捷操作
    showQuick: true,

    // 是否显示刷新按钮
    showRedo: true,

    // 是否显示折叠按钮
    showFold: true,
  },

  // 过渡设置
  transitionSetting: {
    // 是否开启页面切换动画
    // 禁用状态也将禁用页加载
    enable: true,

    // 路由基本切换动画
    basicTransition: RouterTransitionEnum.FADE_SIDE,

    // 是否开启页加载动画
    // 仅当 enable=true 时才开启
    openPageLoading: true,

    // 是否开启顶部进度条
    openNProgress: false,
  },

  // 是否启用KeepAlive缓存，在开发阶段最好关闭，否则需要每次清除缓存
  openKeepAlive: true,

  // 自动锁屏时间，0 不锁屏。单位分钟，默认值为 0
  lockTime: 0,

  // 是否显示面包屑导航
  showBreadCrumb: true,

  // 是否显示面包屑导航图标
  showBreadCrumbIcon: false,

  // 使用错误处理插件
  useErrorHandle: false,

  // 是否开启回到顶部按钮
  useOpenBackTop: true,

  // 是否可以嵌入iframe页面
  canEmbedIFramePage: true,

  // 切换接口时是否删除未关闭的消息并进行通知
  closeMessageOnSwitch: true,

  // 切换接口时是否取消已发送但未响应的 http 请求
  // 如果启用，想要重新定义单个接口可以在单独的接口中设置
  removeAllHttpPending: false,
};

export default setting;
